home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_01 / yuen / cschlr.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-10  |  986 b   |  46 lines

  1. #ifndef __CSCHLR
  2. #define __CSHLR
  3.  
  4. #include <time.h>
  5. #include "cthread.hpp"
  6. #include "csemq.hpp"
  7.  
  8. struct schlr_table
  9.   {
  10.   time_t wakeuptime;
  11.   int next;
  12.   };
  13.  
  14. class Cschlr
  15. {
  16. private:
  17.   Csemq readyQ;                //ready-to-run queue
  18.   Csemq waitQ;                //queue for delayed threads to wait on
  19.   Cthread *task[CSC_NO_THREAD + 3];    //thread objects
  20.   schlr_table *table;            //delay table (linked list)
  21.   int head;                //head of linked list
  22.   int nTask;                //number of threads created
  23.   int nRunning;                //running thread number
  24.  
  25.   void Switch(Csemq *sem);
  26.   void WakeUp();
  27.   
  28.  
  29. public:
  30.   Cschlr();
  31.   ~Cschlr();
  32.   int CreateThread(THDFN func, int stacksize, void *param);
  33.   void Suicide();
  34.   Csemq* CreateSem(long lValue);
  35.   void DestroySem(Csemq *sem);
  36.   void Signal(Csemq *sem, long lMaxCount = 256);
  37.   void Wait(Csemq *sem);
  38.   void Preempt();
  39.   void Sleep(long lSeconds);
  40.   void GetSemStates(Csemq *sem, long &lCount, int &fWait);
  41.   void Run();
  42.   
  43. };
  44.  
  45. #endif
  46.